package com.cy.pj.sys.service.impl;

import com.cy.pj.common.annotation.RequiredLog;
import com.cy.pj.common.pojo.CheckBox;
import com.cy.pj.common.pojo.PageObject;
import com.cy.pj.common.util.ValidUitls;
import com.cy.pj.sys.dao.SysRoleDao;
import com.cy.pj.sys.dao.SysRoleMenuDao;
import com.cy.pj.sys.pojo.SysRole;
import com.cy.pj.sys.pojo.SysRoleMenu;
import com.cy.pj.sys.service.SysRoleService;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class SysRoleServiceImpl implements SysRoleService {

    @Autowired
    private SysRoleDao sysRoleDao;
    @Autowired
    private SysRoleMenuDao sysRoleMenuDao;

    @Override
    public List<CheckBox> findObjects() {
        return sysRoleDao.findObjects();
    }

    @Override
    public SysRoleMenu findById(Integer id) {
        //1.参数校验
        ValidUitls.isArgsValid(id==null||id<1, "id值不正确");
        //2.查询角色自身信息
        SysRoleMenu roleMenu=sysRoleDao.findById(id);//connection
        //3.查询角色对应的菜单id并进行封装
       // List<Integer> menuIds=sysRoleMenuDao.findMenuIdsByRoleId(id);//connection
        //roleMenu.setMenuIds(menuIds);
        //4.返回查询结果
        return roleMenu;
    }


    @RequiredLog("保存角色")
    @Override
    public int updateObject(SysRole entity, Integer[] menuIds) {
        //1.参数校验
        //......
        //2.保存角色自身信息
        int rows=sysRoleDao.updateObject(entity);
        //3.保存角色对应的菜单信息
        sysRoleMenuDao.deleteObjectsRoleById(entity.getId());
        sysRoleMenuDao.insertObjects(entity.getId(),menuIds);
        return rows;
    }

    @RequiredLog("保存角色")
    @Override
    public int saveObject(SysRole entity, Integer[] menuIds) {
        //1.参数校验
        //......
        //2.保存角色自身信息
        System.out.println("entity.id="+entity.getId());
        int rows=sysRoleDao.insertObject(entity);
        System.out.println("entity.id="+entity.getId());
        //3.保存角色对应的菜单信息
        sysRoleMenuDao.insertObjects(entity.getId(),menuIds);
        return rows;
    }

    @RequiredLog("查询角色")
    @Override
    public PageObject<SysRole> findPageObjects(String name, Integer pageCurrent) {
        //1.参数校验
        ValidUitls.isArgsValid(pageCurrent==null||pageCurrent<1,"当前页码值不正确");
        //3.查询当前页记录
        int pageSize=3;
        //启动pageHelper拦截器(其规范由mybatis框架提供)
        Page<SysRole> page=PageHelper.startPage(pageCurrent,pageSize);
        List<SysRole> records=sysRoleDao.findPageObjects(name);
        //4.对查询结果进行封装
        return new PageObject<>((int)page.getTotal(), records, pageCurrent, pageSize);
    }
}
